package br.com.tcm.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.tcm.entity.Setor;

public class SetorDAO {

	private Connection con = null;
	
	public SetorDAO() {
		this.con = new ConnectionFactory().getConnection();
	}
	
    public void insertSetor(Setor setor) {
        try {
            String sql = "insert into setor (nmSetor) values (?)";
            PreparedStatement pst = con.prepareStatement(sql);
            pst.setString(1, setor.getNmSetor());
            pst.execute();
            pst.close();
            System.out.println("Setor Gravado.");
        } catch (SQLException e) {
            throw new RuntimeException("Erro ao inserir setor.");
        }
    }
    
    public void updateSetor(Setor setor) {
    	try {
			String sql = "update setor set nmSetor = ? where idSetor = ?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setString(1, setor.getNmSetor());
			pst.setInt(2, setor.getIdSetor());
			pst.execute();
			pst.close();
			System.out.println("Setor Atualizado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao fazer update no setor.");
		}
    }
    
    public void deleteSetor(Setor setor) {
    	try {
			String sql = "delete from setor where idSetor = ?";
			PreparedStatement pst = con.prepareStatement(sql);
			pst.setInt(1, setor.getIdSetor());
			pst.execute();
			pst.close();
			System.out.println("Setor Apagado.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao apagar o setor.");
		}
    }
    
    public List<Setor> findAll() {
    	List<Setor> setorList = new ArrayList<Setor>();
    	try {
			String sql = "select * from setor";
			PreparedStatement pst = con.prepareStatement(sql);
			ResultSet rs = pst.executeQuery();
			while (rs.next()) {
				Setor setor = new Setor();
				setor.setIdSetor(rs.getInt("idSetor"));
				setor.setNmSetor(rs.getString("nmSetor"));
				setorList.add(setor);
			}
			pst.close();
			System.out.println("Setor listado com sucesso.");
		} catch (SQLException e) {
			throw new RuntimeException("Erro ao listar o setor.");
		}
    	
    	return setorList;
    }
	
}
